给成绩排序并按分数输出人名
现在分别有 5 个人的名字和分数:huhu 5 分、haha 3 分、xixi 5 分、hengheng 2 分和 gaoshou 8 分请按照分数从高到低,输出他们的名字
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| #include <stdio.h> struct student { char name[21]; char score; }; 这里创建了一个结构体用来存储姓名和分数 int main() { struct student a[100],t; int i,j,n; scanf("%d",&n); 输入一个数n for(i=1;i<=n;i++) 循环读入n个人名和分数 scanf("%s %d",a[i].name,&a[i].score); 按分数从高到低进行排序 for(i=1;i<=n-1;i++) { for(j=1;j<=n-i;j++) { if(a[j].score<a[j+1].score) 对分数进行比较 { t=a[j]; a[j]=a[j+1]; a[j+1]=t; } } } for(i=1;i<=n;i++) 输出人名 printf("%s\n",a[i].name); getchar();getchar(); return 0; }
|
说几个要点说白了就是一个结构型变量,存一个分数再存一个名字,用存数字的子变量去进行排序,然后输出存名字的自变量,还有一个要点是,要事先再定义一个结构性变量,冒泡交换位置的时候不能光交换数字啊,得把对应名字也给交换过去啊